package ln.javatest.day15.demo01;
/*
文件复制练习：一读一写
明确：
    数据源：D:\桌面\Java笔记\2.txt
    数据的目的地：D:\桌面\Java笔记\1.txt
文件复制的步骤：
    1.创建字节缓冲输入流对象，构造方法中传递字节输入流
    2.创建字节缓冲输出流对象，构造方法中传递字节输出流
    3.使用字节缓冲输入流对象中的方法read，读取文件
    4.使用字节缓冲输出流中的方法write，把读取的数据写入到内部缓冲区中
    5.释放资源（会先把缓冲区中的数据，刷新到文件中
*/

import java.io.*;

public class Demo01CopyFile {
    public static void main(String[] args) throws IOException {
        long s = System.currentTimeMillis();
        //1.创建字节缓冲输入流对象，构造方法中传递字节输入流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\桌面\\Java笔记\\2.txt"));
        //2.创建字节缓冲输出流对象，构造方法中传递字节输出流
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:\\桌面\\Java笔记\\1.txt"));
        //3.使用字节缓冲输入流对象中的方法read，读取文件
        //一次读取一个字节写入一个字节的方式 // //复制文件共耗时：4毫秒
        /*int len = 0;
        while((len = bis.read())!= -1){
            ////4.使用字节缓冲输出流中的方法write，把读取的数据写入到内部缓冲区中
            bos.write(len);
        }*/

        //使用数组缓冲读取多个字节，写入多个字节 //复制文件共耗时：10毫秒
        int len = 0;
        byte[] bytes = new byte[1024];
        while((len = bis.read(bytes))!=-1){
            bos.write(bytes,0,len);
        }
        // 5.释放资源（会先把缓冲区中的数据，刷新到文件中
        long e = System.currentTimeMillis();
        System.out.println("复制文件共耗时："+(e-s)+"毫秒");

    }
}
